/** *
 * ASM: a very small and fast Java bytecode manipulation framework
 * Copyright (c) 2000,2002,2003 INRIA, France Telecom
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the copyright holders nor the names of its
 *    contributors may be used to endorse or promote products derived from
 *    this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */
package org.febit.wit_shaded.asm;

/**
 * Defines the JVM opcodes, access flags and array type codes. This interface does not define all the JVM opcodes
 * because some opcodes are automatically handled. For example, the xLOAD and xSTORE opcodes are automatically replaced
 * by xLOAD_n and xSTORE_n opcodes when possible. The xLOAD_n and xSTORE_n opcodes are therefore not defined in this
 * interface. Likewise for LDC, automatically replaced by LDC_W or LDC2_W when necessary, WIDE, GOTO_W and JSR_W.
 *
 * @author Eric Bruneton, Eugene Kuleshov
 */
public interface Constants {

    // versions
//  int V1_1 = 3 << 16 | 45;
//  int V1_2 = 0 << 16 | 46;
//  int V1_3 = 0 << 16 | 47;
//  int V1_4 = 0 << 16 | 48;
    int V1_5 = 0 << 16 | 49;

    // access flags
    int ACC_PUBLIC = 0x0001; // class, field, method
//  int ACC_PRIVATE =      0x0002; // class, field, method
//  int ACC_PROTECTED =    0x0004; // class, field, method
    int ACC_STATIC = 0x0008; //        field, method
    int ACC_FINAL = 0x0010; // class, field, method
//  int ACC_SUPER =        0x0020; // class
//  int ACC_SYNCHRONIZED = 0x0020; //               method
//  int ACC_VOLATILE =     0x0040; //        field
//  int ACC_BRIDGE =       0x0040; //               method
//  int ACC_VARARGS =      0x0080; //               method
//  int ACC_TRANSIENT =    0x0080; //        field
//  int ACC_NATIVE =       0x0100; //               method
//  int ACC_INTERFACE =    0x0200; // class
//  int ACC_ABSTRACT =     0x0400; // class,        method
//  int ACC_STRICT =       0x0800; //               method 
//  int ACC_SYNTHETIC =    0x1000; // class, field, method
//  int ACC_ANNOTATION =   0x2000; // class
//  int ACC_ENUM =         0x4000; // class(?) field  inner

    // ASM specific pseudo access flags
//  int ACC_DEPRECATED =   131072; // class, field, method
    // types for NEWARRAY
//  int T_BOOLEAN = 4;
//  int T_CHAR = 5;
//  int T_FLOAT = 6;
//  int T_DOUBLE = 7;
//  int T_BYTE = 8;
//  int T_SHORT = 9;
//  int T_INT = 10;
//  int T_LONG = 11;
    // opcodes                  // visit method (- = idem)
//  int NOP = 0;                // visitInsn
    int ACONST_NULL = 1;        // -
//  int ICONST_M1 = 2;          // -
    int ICONST_0 = 3;           // -
//  int ICONST_1 = 4;           // -
//  int ICONST_2 = 5;           // -
//  int ICONST_3 = 6;           // -
//  int ICONST_4 = 7;           // -
//  int ICONST_5 = 8;           // -
//  int LCONST_0 = 9;           // -
//  int LCONST_1 = 10;          // -
//  int FCONST_0 = 11;          // -
//  int FCONST_1 = 12;          // -
//  int FCONST_2 = 13;          // -
//  int DCONST_0 = 14;          // -
//  int DCONST_1 = 15;          // -
//  int BIPUSH = 16;            // visitIntInsn
//  int SIPUSH = 17;            // -
    int LDC = 18;               // visitLdcInsn
    //int LDC_W = 19;           // -
    //int LDC2_W = 20;          // -
    int ILOAD = 21;             // visitVarInsn
//  int LLOAD = 22;             // -
//  int FLOAD = 23;             // -
//  int DLOAD = 24;             // -
    int ALOAD = 25;             // -
    //int ILOAD_0 = 26;         // -
    //int ILOAD_1 = 27;         // -
    //int ILOAD_2 = 28;         // -
    //int ILOAD_3 = 29;         // -
    //int LLOAD_0 = 30;         // -
    //int LLOAD_1 = 31;         // -
    //int LLOAD_2 = 32;         // -
    //int LLOAD_3 = 33;         // -
    //int FLOAD_0 = 34;         // -
    //int FLOAD_1 = 35;         // -
    //int FLOAD_2 = 36;         // -
    //int FLOAD_3 = 37;         // -
    //int DLOAD_0 = 38;         // -
    //int DLOAD_1 = 39;         // -
    //int DLOAD_2 = 40;         // -
    //int DLOAD_3 = 41;         // -
    //int ALOAD_0 = 42;         // -
    //int ALOAD_1 = 43;         // -
    //int ALOAD_2 = 44;         // -
    //int ALOAD_3 = 45;         // -
//  int IALOAD = 46;            // visitInsn
//  int LALOAD = 47;            // -
//  int FALOAD = 48;            // -
//  int DALOAD = 49;            // -
    int AALOAD = 50;            // -
//  int BALOAD = 51;            // -
//  int CALOAD = 52;            // -
//  int SALOAD = 53;            // -
    int ISTORE = 54;            // visitVarInsn
//  int LSTORE = 55;            // -
//  int FSTORE = 56;            // -
//  int DSTORE = 57;            // -
    int ASTORE = 58;            // -
    //int ISTORE_0 = 59;        // -
    //int ISTORE_1 = 60;        // -
    //int ISTORE_2 = 61;        // -
    //int ISTORE_3 = 62;        // -
    //int LSTORE_0 = 63;        // -
    //int LSTORE_1 = 64;        // -
    //int LSTORE_2 = 65;        // -
    //int LSTORE_3 = 66;        // -
    //int FSTORE_0 = 67;        // -
    //int FSTORE_1 = 68;        // -
    //int FSTORE_2 = 69;        // -
    //int FSTORE_3 = 70;        // -
    //int DSTORE_0 = 71;        // -
    //int DSTORE_1 = 72;        // -
    //int DSTORE_2 = 73;        // -
    //int DSTORE_3 = 74;        // -
    //int ASTORE_0 = 75;        // -
    //int ASTORE_1 = 76;        // -
    //int ASTORE_2 = 77;        // -
    //int ASTORE_3 = 78;        // -
//  int IASTORE = 79;           // visitInsn
//  int LASTORE = 80;           // -
//  int FASTORE = 81;           // -
//  int DASTORE = 82;           // -
//  int AASTORE = 83;           // -
//  int BASTORE = 84;           // -
//  int CASTORE = 85;           // -
//  int SASTORE = 86;           // -
//  int POP = 87;               // -
//  int POP2 = 88;              // -
    int DUP = 89;               // -
//  int DUP_X1 = 90;            // -
//  int DUP_X2 = 91;            // -
//  int DUP2 = 92;              // -
//  int DUP2_X1 = 93;           // -
//  int DUP2_X2 = 94;           // -
//  int SWAP = 95;              // -
//  int IADD = 96;              // -
//  int LADD = 97;              // -
//  int FADD = 98;              // -
//  int DADD = 99;              // -
//  int ISUB = 100;             // -
//  int LSUB = 101;             // -
//  int FSUB = 102;             // -
//  int DSUB = 103;             // -
//  int IMUL = 104;             // -
//  int LMUL = 105;             // -
//  int FMUL = 106;             // -
//  int DMUL = 107;             // -
//  int IDIV = 108;             // -
//  int LDIV = 109;             // -
//  int FDIV = 110;             // -
//  int DDIV = 111;             // -
//  int IREM = 112;             // -
//  int LREM = 113;             // -
//  int FREM = 114;             // -
//  int DREM = 115;             // -
//  int INEG = 116;             // -
//  int LNEG = 117;             // -
//  int FNEG = 118;             // -
//  int DNEG = 119;             // -
//  int ISHL = 120;             // -
//  int LSHL = 121;             // -
//  int ISHR = 122;             // -
//  int LSHR = 123;             // -
//  int IUSHR = 124;            // -
//  int LUSHR = 125;            // -
//  int IAND = 126;             // -
//  int LAND = 127;             // -
//  int IOR = 128;              // -
//  int LOR = 129;              // -
//  int IXOR = 130;             // -
//  int LXOR = 131;             // -
    int IINC = 132;             // visitIincInsn
//  int I2L = 133;              // visitInsn
//  int I2F = 134;              // -
//  int I2D = 135;              // -
//  int L2I = 136;              // -
//  int L2F = 137;              // -
//  int L2D = 138;              // -
//  int F2I = 139;              // -
//  int F2L = 140;              // -
//  int F2D = 141;              // -
//  int D2I = 142;              // -
//  int D2L = 143;              // -
//  int D2F = 144;              // -
//  int I2B = 145;              // -
//  int I2C = 146;              // -
//  int I2S = 147;              // -
//  int LCMP = 148;             // -
//  int FCMPL = 149;            // -
//  int FCMPG = 150;            // -
//  int DCMPL = 151;            // -
//  int DCMPG = 152;            // -
    int IFEQ = 153;             // visitJumpInsn
    int IFNE = 154;             // -
//  int IFLT = 155;             // -
//  int IFGE = 156;             // -
//  int IFGT = 157;             // -
//  int IFLE = 158;             // -
//  int IF_ICMPEQ = 159;        // -
//  int IF_ICMPNE = 160;        // -
//  int IF_ICMPLT = 161;        // -
//  int IF_ICMPGE = 162;        // -
//  int IF_ICMPGT = 163;        // -
//  int IF_ICMPLE = 164;        // -
    int IF_ACMPEQ = 165;        // -
//  int IF_ACMPNE = 166;        // -
    int GOTO = 167;             // -
    int JSR = 168;              // -
    int RET = 169;              // visitVarInsn
//  int TABLESWITCH = 170;      // visiTableSwitchInsn
    int LOOKUPSWITCH = 171;     // visitLookupSwitch
    int IRETURN = 172;          // visitInsn
//  int LRETURN = 173;          // -
//  int FRETURN = 174;          // -
//  int DRETURN = 175;          // -
    int ARETURN = 176;          // -
    int RETURN = 177;           // -
    int GETSTATIC = 178;        // visitFieldInsn
//  int PUTSTATIC = 179;        // -
    int GETFIELD = 180;         // -
    int PUTFIELD = 181;         // -
    int INVOKEVIRTUAL = 182;    // visitMethodInsn
    int INVOKESPECIAL = 183;    // -
    int INVOKESTATIC = 184;     // -
    int INVOKEINTERFACE = 185;  // -
    //int UNUSED = 186;         // NOT VISITED
    int NEW = 187;              // visitTypeInsn
//  int NEWARRAY = 188;         // visitIntInsn
//  int ANEWARRAY = 189;        // visitTypeInsn
    int ARRAYLENGTH = 190;      // visitInsn
    int ATHROW = 191;           // -
    int CHECKCAST = 192;        // visitTypeInsn
//  int INSTANCEOF = 193;       // -
//  int MONITORENTER = 194;     // visitInsn
//  int MONITOREXIT = 195;      // -
    //int WIDE = 196;           // NOT VISITED
//  int MULTIANEWARRAY = 197;   // visitMultiANewArrayInsn
    int IFNULL = 198;           // visitJumpInsn
//  int IFNONNULL = 199;        // -
    //int GOTO_W = 200;         // -
    //int JSR_W = 201;          // -
}
